package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import negocio.Empresa;
import util.ConnectionHelper;

public class RepositorioEmpresa implements IRepositorioEmpresa {

	@Override
	public int cadastrarEmpresa(Empresa empresa) {
		
		Statement stmt  = null;
		int status = 0;
		
		
		String query = "INSERT INTO `empregosonline`.`empresas`"+
						"(`descricao`,"+
						"`email`,"+
						"`endereco`,"+
						"`nome`,"+
						"`senha`)"+
						"VALUES"+
						"( '"+
						empresa.getDescricao()+"', '"+
						empresa.getEmail()+"' ,'"+
						empresa.getEndereco()+"','"+
						empresa.getNome()+"','"+
						empresa.getSenha()+"')";

		
		try {
			Connection con = ConnectionHelper.abrir();
			stmt = con.createStatement();
			status = stmt.executeUpdate(query);
			//con.commit();
			System.out.println("Cadastro realizado com sucesso!");
		} catch (SQLException e) {
				e.printStackTrace();
		} finally {
			if (stmt != null) {
				try {
					stmt.close();
				} catch (SQLException e) {

					e.printStackTrace();
				}
			}
		}
		return status;
	}

	@Override
	public Empresa consultarEmpresa(int id) {

		Statement stmt  = null;
		Empresa empresa = null;
		
		String query = "select *  from" + " empresas " + "where id = " + id;
		
		try {
			Connection con = ConnectionHelper.abrir();
			stmt = con.createStatement();
			ResultSet rs = stmt.executeQuery(query);
			while (rs.next()) {
				empresa = new Empresa();
				
				String nome = rs.getString("nome");
				int idEmpresa = rs.getInt("id");
				String descricao = rs.getString("descricao");
				String endereco = rs.getString("endereco");
				String email = rs.getString("email");
				String senha = rs.getString("senha");
				
				empresa.setNome(nome);
				empresa.setId(idEmpresa);
				empresa.setDescricao(descricao);
				empresa.setEndereco(endereco);
				empresa.setEmail(email);
				empresa.setSenha(senha);
								
			}
		} catch (SQLException e) {

		} finally {
			if (stmt != null) {
				try {
					stmt.close();
				} catch (SQLException e) {

					e.printStackTrace();
				}
			}
		}

		return empresa;
	}

	@Override
	public int consultarIdEmpresa(String email) {

		Statement stmt  = null;
		
		int idEmpresa = -1;
		
		String query = "select id  from" + " empresas " + "email  = " + email;
		
		try {
			Connection con = ConnectionHelper.abrir();
			stmt = con.createStatement();
			ResultSet rs = stmt.executeQuery(query);
			while (rs.next()) {
				idEmpresa = rs.getInt("id");
			}
		} catch (SQLException e) {

		} finally {
			if (stmt != null) {
				try {
					stmt.close();
				} catch (SQLException e) {

					e.printStackTrace();
				}
			}
		}

		return idEmpresa;
	}

	@Override
	public Empresa validarLoginEmpresa(String email, String senha) {


		Statement stmt = null;
		Empresa user = null;
		String query = "select *  from" + " empresas " + "where email = '"
				+ email + "' and senha = '" + senha	+ "'";

		try {
			Connection con = ConnectionHelper.abrir();
			stmt = con.createStatement();
			ResultSet rs = stmt.executeQuery(query);
			while (rs.next()) {
				user = new Empresa();
				String nome = rs.getString("nome");
				int id = rs.getInt("id");
				String emailUser = rs.getString("email");
				String senhaUser = rs.getString("senha");
				String endereco  = rs.getString("endereco");
				String descricao = rs.getString("descricao");
				
				user.setNome(nome);
				user.setId(id);
				user.setEmail(emailUser);
				user.setSenha(senhaUser);
				user.setEndereco(endereco);
				user.setDescricao(descricao);
				
			}
		} catch (SQLException e) {
				e.printStackTrace();
		} finally {
			if (stmt != null) {
				try {
					stmt.close();
				} catch (SQLException e) {

					e.printStackTrace();
				}
			}
		}
		return user;

	
	}

	@Override
	public Empresa validarLoginEmpresaSegura(String email, String senha) {
		Empresa user = null;
		PreparedStatement pstmt = null;
		String query = "select *  from" + " empresas " + "where email = ?  and senha = ? ";

		try {
			Connection con = ConnectionHelper.abrir();
			/* ---Prepared Statement--- */
			pstmt = con.prepareStatement( query );
			pstmt.setString( 1, email);
			pstmt.setString( 2, senha);
			ResultSet rs = pstmt.executeQuery( );
			/* ------------------------ */
			
			while (rs.next()) {
				user = new Empresa();
				String nome = rs.getString("nome");
				int id = rs.getInt("id");
				String emailUser = rs.getString("email");
				String senhaUser = rs.getString("senha");
				String endereco  = rs.getString("endereco");
				String descricao = rs.getString("descricao");
				
				user.setNome(nome);
				user.setId(id);
				user.setEmail(emailUser);
				user.setSenha(senhaUser);
				user.setEndereco(endereco);
				user.setDescricao(descricao);
				
			}
		} catch (SQLException e) {
				e.printStackTrace();
		} finally {
			if (pstmt != null) {
				try {
					pstmt.close();
				} catch (SQLException e) {

					e.printStackTrace();
				}
			}
		}
		return user;

	
	
	}

	@Override
	public int cadastrarEmpresaStatment(Empresa empresa) {
		Empresa user = null;
		PreparedStatement pstmt = null;
		int rs = 0;
		String query = "INSERT INTO `empregosonline`.`empresas`"+
						"(`descricao`,"+
						"`email`,"+
						"`endereco`,"+
						"`nome`,"+
						"`senha`)"+
						"VALUES"+
						"( ?, ?, ?, ?, ? )";
						

		try {
			Connection con = ConnectionHelper.abrir();
			/* ---Prepared Statement--- */
			pstmt = con.prepareStatement( query );
			pstmt.setString( 1, empresa.getDescricao());
			pstmt.setString( 2, empresa.getEmail());
			pstmt.setString( 3, empresa.getEndereco());
			pstmt.setString( 4, empresa.getNome());
			pstmt.setString( 5, empresa.getSenha());
			
			rs = pstmt.executeUpdate(query);
			/* ------------------------ */
				
				
			
		} catch (SQLException e) {
				e.printStackTrace();
		} finally {
			if (pstmt != null) {
				try {
					pstmt.close();
				} catch (SQLException e) {

					e.printStackTrace();
				}
			}
		}
		return rs;

	
	}

	
}
